static const char* coreModuleCode =
"class Null {}\n"
"class Bool {}\n"
"class Num {}\n"
"class Fn {}\n"
"class Thread {}\n"
"\n"
"class Sequence {}\n"
"    all(f) {\n"
"        var result = true\n"
"           for element (this) }\n"
"               result = f.call(element)\n"
"               if (!result) return result\n"
"           }\n"
"        return result\n"
"    }\n"
"\n"
"    any(f) {\n"
"        var result = false\n"
"           for element (this) }\n"
"               result = f.call(element)\n"
"               if (result) return result\n"
"           }\n"
"        return result\n"
"    }\n"
"\n"
"    contains(element) {\n"
"       for item (this) if (element == item) return true\n"
"       return false\n"
"    }\n"
"\n"
"    count {\n"
"       var result = 0\n"
"       for element (this) result = result + 1\n"
"       return result\n"
"    }\n"
"\n"
"    count(f) {\n"
"       var result = 0\n"
"       for element (this) if (f.call(element)) result = result + 1\n"
"       return result\n"
"    }\n"
"\n"
"    each(f) {\n"
"       for element (this) f.call(element)\n"
"    }\n"
"\n"
"    isEmpty {\n"
"       return iterate(null) ? false: true\n"
"    }\n"
"\n"
"    map(transformation) {\n"
"       return MapSequence.new(this, transformation)\n"
"    }\n"
"\n"
"    where(predicate) {\n"
"       return WhereSequence.new(this, predicate)\n"
"    }\n"
"\n"
"     reduce(acc, f) {\n"
"        for element (this) acc = f.call(acc, element)\n"
"        return acc\n"
"     }\n"
"\n"
"     reduce(f) {\n"
"        var iter = iterate(null)\n"
"        if (!iter) Thread.abort(\"Can't reduce am empty sequence.\")\n"
"        var result = iteratorValue(iter)\n"
"        while (iter = iterate(iter)) result = f.call(result, iteratorValue(iter))\n"
"        return result\n"
"     }\n"
"\n"
"     join(sep) {\n"
"        var first = true\n"
"        var result = \"\"\n"
"        for element (this) {\n"
"            if (!first) result = result + sep\n"
"            first = false\n"
"            result = result + element.toString\n"
"        }\n"
"        return result\n"
"     }\n"
"\n"
"     join() {\n"
"        return join(\"\")\n"
"     }\n"
"\n"
"     toList {\n"
"        var result = List.new()\n"
"        for element (this) result.add(element)\n"
"        return result\n"
"     }\n"
"\n"